<?php

class AccessController extends St_Controller_Action {

    public function init() {
        parent::init();
        if ($this->auth->hasIdentity() && (St_Registry::getActionName() != "logout") && (St_Registry::getActionName() != "deny")) {
            $this->_redirect("index");
        }
    }

    public function indexAction() {
        
    }

    public function loginsubmitAction() {
        $user = $this->_getParam("data", false);

        if ($user['UserName']) {
//            var_dump($user);
            Zend_Loader::loadClass("St_Auth_Adapter");
            $authAdapter = new St_Auth_Adapter ( );
            $authAdapter->setUserInfo($user ['UserName'], $user ['Password']);

            $result = $this->auth->authenticate($authAdapter);

            if ($result->isValid()) {
                $user = $this->_getCurrentUser();
                $this->logger->log($user['email'] . " logged in", $user['UserID']);
                $baseUrl = St_Registry::getConfig("base_url");
                if ($user['groupID'] == 2) {
                    echo St_Registry::Redirect($baseUrl . 'user/profile/');
                } else {
                    echo St_Registry::Redirect($baseUrl . 'user/sponsorprofile/');
                }
            } else {
                $this->logger->log($user['nickName'] . " logged in fail");
                $this->view->username = $user['nickName'];
                $this->view->password = $user['Password'];
                $message = array(
                    'status' => 'error',
                    'message' => 'Tên tài khoản hoặc mật khẩu sai'
                );
                St_Registry::sendMessage(json_encode($message));
                die;
            }
        } else {
            $this->_forward("index");
        }
        die;
    }

    public function logoutAction() {
        $user = $this->_getCurrentUser();
        $this->logger->log($user['UserName'] . " logged out");
        $this->auth->clearAuthInfo();
        $this->_redirect("index");
    }

    public function denyAction() {
        
    }

    public function forgotpasswordAction() {
        $db = St_Registry::getDB();
        $postCaptcha = $this->_getParam("captcha", false);
        $uploadDir = BASE_DIR . '/uploads/captcha';
        $baseUrl = St_Registry::getConfig("base_url");
        $captcha = new Zend_Form_Element_Captcha(
                        'captcha', // This is the name of the input field  
                        array(
                            'captcha' => array(
                                'captcha' => 'Image',
                                // Length of the word...  
                                'wordLen' => 8,
                                // Captcha timeout, 5 mins  
                                'timeout' => 300,
                                'font' => BASE_DIR . '\font\TFPironv2.otf',
                                // Where to put the image  
                                'imgDir' => $uploadDir,
                                // URL to the images  
                                // This was bogus, here's how it should be... Sorry again :S  
                                'imgUrl' => $baseUrl . 'uploads/captcha/',
                                'DotNoiseLevel' => '4'
                            ),
                            'class' => 'required'
                        )
        );
        $data = $this->_getParam("data", false);
        if ($data) {
            if ($captcha->isValid($postCaptcha, $_POST)) {
                $select = $db->select()
                        ->from(array('u' => 'user'))
                        ->where("email like('{$data['email']}')")
                ;
                if ($result = $db->fetchRow($select)) {
                    $token = base64_encode($result['email'] . '|*|' . time());
                    $url = $baseUrl . 'access/resetpassword/token/' . $token;
//                    echo $url;die;
                    $to = 'ngthaibinh86@gmail.com';
                    $subject = 'Quên mật khẩu';
                    $content = "Kính chào quý khách:" . "\n<br>"
                            . "Vui lòng click vào liên kết dưới đây để thay đổi mật khẩu:\n<br>"
                            . "$url\n<br>"
                            . "Liên kết trên sẻ tự động hủy bỏ sau 24 giờ\n<br>"
                    ;
                    $email_data = array(
                        'to' => $to,
                        'toname' => $result['name'],
                        'from' => 'Mick <mick@slopetracker.no>',
                        'subject' => $subject,
                        'message' => $content
                    );
                    $response = St_Registry::sendAWSEmail($email_data);

                    if ($response) {
                        $message = array(
                            'status' => 'success',
                            'message' => 'Gữi yêu cầu thành công. Xin vui lòng kiểm tra email của bạn'
                        );
                    } else {
                        $message = array(
                            'status' => 'error',
                            'message' => 'Gữi yêu cầu không thành công xin vui lòng thử lại'
                        );
                    }
                } else {
                    $message = array(
                        'status' => 'error',
                        'message' => 'Email này không tồn tại'
                    );
                }
            } else {
                $message = array(
                    'status' => 'error',
                    'message' => 'Mã xác thực sai'
                );
            }
            St_Registry::sendMessage(json_encode($message));
        }
        $this->view->captcha = $captcha;
    }

    public function resetpasswordAction() {
        $token = $this->_getParam('token', false);

        if ($token) {
            $data = base64_decode($token);
            $data = explode('|*|', $data);
            $email = $data[0];
            $time = $data[1];
            $validTime = time() + 24 * 60 * 60;
            if ($time <= $validTime) {
                $this->view->reset = true;
                $this->view->token = $token;
                $data = $this->_getParam('data', false);
                if ($data) {
                    Zend_Loader::loadClass("St_User");
                    $userObj = new St_User ();
                    $data['password'] = md5($data['password']);
                    if ($userObj->update($data, "email = '{$email}'")) {
                        $message = array(
                            'status' => 'success',
                            'message' => 'Cập nhật mật khẩu mới thành công'
                        );
                        $this->view->login = true;
                        $this->view->reset = false;
                    } else {
                        $message = array(
                            'status' => 'error',
                            'message' => 'Cập nhật mật khẩu mới không thành công.<br /> Xin vui lòng thử lại hoặc liên hệ với admin để được giải quyết'
                        );
                    }
                    St_Registry::sendMessage(json_encode($message));
                }
            } else {
                $this->view->reset = false;
            }
        } else {
            $this->view->reset = false;
        }
    }

}

